export const state = () =>{
    return {
        // 表单查询的vo
        form: {
            city: '', //城市id
            enterTime: '', //入住时间
            leftTime: '', // 离开时间
            person: '', // 人数
            price_lt: '', //酒店价格
            hotellevel_in: '', //酒店星级
            hoteltype_in: '', //酒店类型
            hotelasset_in: '', // 酒店设施
            hotelbrand_in: '', //酒店品牌
        },
        // 用于存放城市区域的vo
        cityscenics: [],
        // 用于存放酒店分页数据的对象数组
        hotels: {},
        // 存放查询到的目前所在的城市数据
        cityData: {
            data:{
                data: []
            }
        },
        // 存放定位到的城市名称
        cityName: '',
        // 存放城市的经纬度
        location: {
            latitude: '39.908775',
            longitude: '116.406315'
        },
        query: ''
    }
}

export const mutations = {
    // 保存城市的区域
    saveCityScenics(state,data){
        state.cityscenics = data;
    },
    removeAll(state){
        state.cityscenics = [],
        state.hotels = {},
        state.cityData = {}
    },
    // 保存旅馆数组的值
    savehotels(state,data){
        state.hotels = data;
    },
    // 修改旅馆
    updatehotels(state){
        console.log('进入修改');
        state.hotels.name = '大罗'
    },
    // 保存城市详情
    saveCityData(state,data){
        state.cityData = data;
        state.cityName = data.data.data[0].name
    },
    // 存放城市名称
    saveCityName(state,data){
        state.cityName = data;
    },
    // 设置城市的经纬度
    setCityLocation(state,data){
        state.location = data;
    },
    // 获取值
    getData(state,data){
        console.log(state.cityName);
        return state.cityName;
    },
    // 保存最后一次查询的内容
    saveQuery(){
        
    }
}

export const actions = {
    searchCity( { commit }, params){
        return new Promise((resolve,reject) => {
            this.$axios({   
                url: `/cities`,
                params: params
            }).then(res => {
                commit('saveCityData', res);
                resolve(res);
            })
        })
    },
    saveHotels({ commit }, params){
        return new Promise((resolve,reject) => {
            this.$axios({
                url: '/hotels',
                params: params
            }).then(res => {
                commit('savehotels', res);
                resolve(res);
            })
        })
    },
    // 根据字符串拼接获酒店数据
    searchHotelsByQueryString({ commit },queryString){
        return new Promise((resolve,reject) => {
            this.$axios({
                url: `/hotels?${queryString}`
            }).then(res => {
                commit('savehotels', res);
                resolve(res);
            })
        })
    },
    // 查询单个酒店的信息
    searchHotelsData({ commit }, params){
        return Promise.resolve(()=>{
            return this.$axios({
                url: `/hotels`,
                params: params
            })
        })
    }
}